package com.hsqyz.common.utils.regex;

import com.hsqyz.common.exception.ServiceException;
import com.hsqyz.common.utils.string.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式工具类
 *
 * @author lcz
 */
public class RegexUtil {

    /**
     * 校验密码强度
     *
     * @param password 明文密码
     */
    public static void checkPasswordStrength(String password) {
        if (StringUtils.isBlank(password)) {
            throw new ServiceException("密码不能为空!");
        } else {
            // ----------------------密码强度校验-------------------------
            if (!password.matches(".*[0-9].*")) {
                throw new ServiceException("密码至少包含一个数字!");
            }
            if (!password.matches(".*[a-z].*")) {
                throw new ServiceException("密码至少包含一个小写字母!");
            }
            if (!password.matches(".*[A-Z].*")) {
                throw new ServiceException("密码至少包含一个大写字母!");
            }
            if (!password.matches(".*[@#$%^&+=].*")) {
                throw new ServiceException("密码至少包含一个特殊字符 (@, #, $, %, ^, &, +, =)!");
            }
            if (password.length() < 8) {
                throw new ServiceException("密码长度至少为8个字符!");
            }
            if (password.matches(".*\\s+.*")) {
                throw new ServiceException("密码不能包含空白字符!");
            }
        }
    }

    /**
     * 校验手机号
     */
    public static void checkPhone(String phone) {
        if (StringUtils.isBlank(phone)) {
            throw new ServiceException("手机号不能为空!");
        } else {
            if (!phone.matches(RegexConstant.REGEX_MOBILE)) {
                throw new ServiceException("手机号格式不正确!");
            }
        }
    }

    /**
     * 获取文本中包含的手机号
     */
    public static String getPhoneNumber(String text) {
        Pattern pattern = Pattern.compile(RegexConstant.REGEX_MOBILE);
        Matcher matcher = pattern.matcher(text);
        if (matcher.find()) {
            return matcher.group();
        }
        return "";
    }

    /**
     * 获取文本中包含的微信号
     */
    public static String getWechatId(String text) {
        Pattern pattern = Pattern.compile(RegexConstant.REGEX_WECHAT_ID);
        Matcher matcher = pattern.matcher(text);
        if (matcher.find()) {
            return matcher.group();
        }
        return "";
    }

    /**
     * 校验网址
     */
    public static void checkUrl(String url) {
        if (StringUtils.isBlank(url)) {
            throw new ServiceException("网址不能为空!");
        } else {
            if (!url.matches(RegexConstant.REGEX_URL)) {
                throw new ServiceException("网址格式不正确!");
            }
        }
    }


}
